Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.10.2016, 13:36
Интересующийся
Отправить личное сообщение для Greatest_Duke Посмотреть профиль Найти все сообщения от Greatest_Duke
 
Регистрация: 02.08.2015
Сообщений: 27

Из-за асинхронного ajax не перезагружается страница
Собственно, у меня есть AJAX запрос, который отправляет на скрипт, в котором, в свою очередь, есть бесконечный цикл. В этом бесконечно цикле проверяется, есть ли новые данные, и если есть, то скрипт отвечает. А если скрипт работает более 100 секунд, то он сам отключает соединение.

Так вот, как сделать так, чтобы если человек перезагружает страницу, либо же выходит из неё, ему не приходилось ждать, пока сервер ответит, либо отключит соединение?

AJAX запрос
function waitForMsg(){

      ajax = $.ajax({
            type: 'GET',
            data: data,
            dataType: 'json',
            url: 'my_domain',
            success: function(data){
             waitForMsg();
            }, 
            error: function(a, b, c){ setTimeout(waitForMsg(), 1000); }
        });

    };


$(document).ready(function(){waitForMsg();});

window.onunload=function()
{
   ajax.abort();
}
Ответить с цитированием
  #2 (permalink)  
Старый 29.10.2016, 15:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Greatest_Duke
В этом бесконечно цикле проверяется, есть ли новые данные
А для этого нужен цикл да еще бесконечный?

А уход со страницы и не будет ничего ожидать.
Ответить с цитированием
  #3 (permalink)  
Старый 29.10.2016, 16:37
Интересующийся
Отправить личное сообщение для Greatest_Duke Посмотреть профиль Найти все сообщения от Greatest_Duke
 
Регистрация: 02.08.2015
Сообщений: 27

Цикл бесконечный нужен для того, чтобы не отсылать каждую секунду AJAX запрос.

А, насчет ухода со страницы я не соглашусь. Когда AJAX запрос отправлен, я не могу переходить по ссылкам, обновлять страницу, и закрывать страницу т.к. страница ждет ответа от PHP скрипта.
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2016, 16:41
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Наверно стоит сбросить таймер запросов при уходе со страницы (window.onunload) clearTimeout(ID), ибо если вкладка не закрыта(или не перекрыта новой страницей), а по переходу со странице с таймером открыта новая, запросы так и будут шуровать... ток реже
Т.е вынести ID из функции

var timId;
function waitForMsg(){

      ajax = $.ajax({
            type: 'GET',
            data: data,
            dataType: 'json',
            url: 'my_domain',
            success: function(data){
             waitForMsg();
            }, 
            error: function(a, b, c){ timId=setTimeout(waitForMsg(), 1000); }
        });

    };


$(document).ready(function(){waitForMsg();});

window.onunload=function()
{
   clearTimeout(timId);
}

Последний раз редактировалось Deff, 29.10.2016 в 17:17.
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2016, 16:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Greatest_Duke
т.к. страница ждет ответа от PHP скрипта.
Это если синхронный запрос, но зачем?
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2016, 16:46
Интересующийся
Отправить личное сообщение для Greatest_Duke Посмотреть профиль Найти все сообщения от Greatest_Duke
 
Регистрация: 02.08.2015
Сообщений: 27

В том то и дело, что это асинхронный запрос.
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2016, 16:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если запрос асинхронный, то ни что не мешает клиенту покинуть страницу в любое время. Или что означает Когда AJAX запрос отправлен, я не могу переходить по ссылкам, обновлять страницу, и закрывать страницу - не желание такового с вашей стороны как разработчика?
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2016, 16:49
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Greatest_Duke Посмотреть сообщение
Цикл бесконечный нужен для того, чтобы не отсылать каждую секунду AJAX запрос.

А, насчет ухода со страницы я не соглашусь. Когда AJAX запрос отправлен, я не могу переходить по ссылкам, обновлять страницу, и закрывать страницу т.к. страница ждет ответа от PHP скрипта.
Я думаю проблемы со ссылками именно из-за нарастания колва Аякс запросов с незакрытых вкладок, ибо брауз их выстраивает со всех вкладок в какую-то очередь
Типично один - два необработанных ассинхронных запроса не мешают серфингу брауза, ибо полно сайтов с лентами новостей по аяксу, так же меняемых по таймированному автозапросу
Ответить с цитированием
  #9 (permalink)  
Старый 29.10.2016, 17:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Greatest_Duke
отправляет на скрипт, в котором, в свою очередь, есть бесконечный цикл
Думаю с первым (с клиентом) понятно, что не так все, а вот как все-таки понимать это? Если клиент разрывает соединение, то серверный скрипт будет продолжать работу. И если это бесконечный цикл, то остановить его можно только по timeout, что уже очень плохо, так можно и завалить сервер запросами клиента по собственному желанию.

И зачем на стороне сервера такой цикл и вообще цикл для данной задачи?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При выборе даты в datepicker страница перезагружается wfjs jQuery 2 08.01.2016 18:47
Ожидание асинхронного ajax Hapson AJAX и COMET 17 30.03.2014 02:33
Передать значение в коллбэк Success для асинхронного Ajax denyweb AJAX и COMET 3 29.08.2012 23:20
vkontakte, html5 и как почему не перезагружается страница olga153b Events/DOM/Window 10 02.11.2011 15:20
Страница произвольно перезагружается axon Events/DOM/Window 3 24.02.2011 08:47